package com.alibaba.nacos.example.spring.cloud.test;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * @program: eshop-all
 * @description: tcc事务中存在zk上一直进行事务变化监听的实体
 * @author: Renyansong
 * @create: 2019-01-21 06:44
 **/
@Getter
@Setter
@ToString
public class TccEntity {

    // 第一阶段 进行服务的检测
    // 然后第一次发起方进行事务的锁定资源 传递下一个需要检测和调用的服务名和接口 try阶段完成

    // 第二个 Confirm 如果事务都能成功的锁定资源 那么进行事务的执行 成功了就完成 失败了进行第三阶段

    // 第三阶段 Cancel 有参与的一方在上面的步骤中执行失败了 需要进行事务的回滚操作

    /**
     * 阶段
     */
    private String step;

    /**
     * 全局唯一事务id
     */
    private String uuid;

    /**
     * 发起者服务名
     */
    private String sponsor;

    /**
     * 发起者预留资源接口名
     */
    private String sponsorMethodName;

    /**
     * 传递参数json
     */
    private String paramJsonStr;

    /**
     * 调用其他参与者的服务名列表
     */
    private List<String> parpicipants;

    /**
     * 参与者预留资源接口
     */
    private List<String> parpicipantsMethodNames;

    /**
     * 参与者传递参数
     */
    private List<String> participansParams;

    /**
     * 确认资源接口
     */
    private List<String> confirmMethods;

    /**
     * 确认资源的参数
     */
    private List<String> confirmParams;

    /**
     * 参与者取消资源接口
     */
    private List<String> cancelMethodNames;

    /**
     * 参与者取消接口的参数
     */
    private List<String> cancelParams;

    /**
     * 时间戳
     */
    private Long timestamp;

}

    